Systems that remotely provide applications can remotely provide users with application instances configured according to a user's settings and dedicated to a user during the length of a user session. When a user accesses a remote application, the user can log onto a remote server that can execute a remote application that is able to intercept or receive user application execution requests, and respond to the requests by instantiating an instance of the requested application on the remote server. A user can access the application instances by either remotely interacting with the application via a presentation level protocol or by receiving a stream of application files from a file or application server. In instances where the user wishes to receive files and data from the user profile at a delayed point in time (or “just-in-time”), delivery of the files and data may be delayed until after the user logs into a machine. Delaying data and file delivery to a execution machine can speed system logon performance. Further, there may be consistency problems between the file and data versions delivered to a user because the user may receive multiple versions of the user profile when the user modifies the data and files post-login and logs on to more than one machine at one time. For example when one or more files are changed by the user while the user is logged into a first user session at one point in time, and one or more files are changed by the user while the user is logged into a second user session at another point in time; inconsistencies can arise when the first and second user sessions overlap such that there exists a point in time when both the first and the second user session execute substantially simultaneously. In this instance, a user may receive an inconsistent profile because the changes made to the files in the first user session may not be reflected in the files streamed to the user during the second user session and cross file consistency issues can arise if one file references files separately changed in a second session.
An example of how this can occur is displayed in FIG. 1A. Illustrated in FIG. 1A is a scenario where a user receives File B during a first login session and again during a second login session. The user changes File B during the second login session and writes the changed file to the user's base user profile upon logging off of the second login session, the change made to File B during the second login session is not reflected in the profile streamed to the user during the first login session which persists past the point in time when the second login session ends. Therefore when the user requests File B, the version delivered to the user is inconsistent with the most recent version of the file, e.g. the version modified during the second login session and stored in the user's base user profile.
An example of how to mitigate user profile inconsistencies is described in FIG. 1B which illustrates a system where each change to a file is reflected in a delta storage repository. Thus, each time a change is made to files within the user profile, the changes are copied to a delta storage repository and are not merged into the base user profile until the associated user session ends. What can result over time is a potentially large number of copies of the user profile. Such a system can be very complex, can include multiple points of failure and can require a great deal of memory. Thus, methods and systems are needed to mitigate profile inconsistencies that are simple and require a reduced amount of memory.